Приложение 2

ОПИСАНИЕ ПРОГРАММЫ COMCAL

Программа COMCAL предназначена для вычисления комплексных функций от комплексных переменных и решения системы линейных уравнений n-ной степени с комплексными переменными. Все комплексные или действительные постоянные должны быть предварительно введены с помощью операции присвоения и фактически ничем не отличаются от переменных. Характерной особенностью синтаксиса записи операций является использование прописных (заглавных) букв для обозначения констант и переменных, поскольку строчные используются для обозначения функций. В качестве примера программы на языке системы рассмотрим программу с4_007.сс, имеющуюся на прилагаемой к книге дискете и содержащую расчет схемы из трех элементов (задача 1 из методических указаний к разделу 4.2). Строки, на которых должны выполняться операции, пронумерованы для удобства пояснений, в реальной программе номера строк отсутствуют. Текст программы с4_007.сс

Сразу после запуска программы сс.ехе можно начать редактировать текст. Первые две строки начинаются с ! и представляют собой комментарий. Затем следуют строки, задающие исходные данные с помощью операций присвоения. Это уже исполняемые строки, и после того, как нажата клавиша Enter, выполняются следующие операции: производится вычисление значения переменной из выражения, записанного в текущей строке, на нижние табло выводится результат вычислений и курсор переводится на следующую строку. Когда курсор находится на какой-либо строке, возможно как ее редактирование, так и вычисление значения переменной при нажатии на клавишу Enter. Отметим, что в строке 14 для вычисления комплексного выражения для полной мощности применяется запись сопряженного значения потребляемого тока, для чего перед обозначением тока поставлен знак &. После того, как программа вычислений написана, можно получить все результаты, проходя строки программы, начиная с первой, с помощью нажатия клавиши Enter. При проходе пустых строк и строк комментария на табло будут появляться нулевые значения (программа эти невычисляемые строки игнорирует). В результате выполнения операций на пронумерованных вычисляемых строках нашего примера в нижних табло экрана будут появляться следующие значения компонентов комплексных переменных:

№ | Real | Imag | Abs | Arg, рад | Arg,градП
1 | +5.0000000Е+01 | +О.ОООООООЕ+00 | +5.0000000Е+01 | +О.ОООООООЕ+00 | +00° 0'0"
2 | +6.0000000Е+01 | +0,ОООООООЕ+00 | +6.0000000Е+02 | +О.ОООООООЕ+00 | +00°0'0"
3 | +2.0000000Е-01 | +0,ОООООООЕ+00 | +2.0000000Е-01 | +О.ОООООООЕ+00 | +00°0'0"
4 | +3.9800000Е-05 | +О.ОООООООЕ+00 | +3.9800000Е-05 | +О.ОООООООЕ+00 | +00° 0'0"
5 | +1.0000000Е+02 | +О.ОООООООЕ+00 | +1.0000000Е+02 | +О.ОООООООЕ+00 | +00°0'0"
6 | +О.ОООООООЕ+00 | +6.2831853Е+01 | +6,2831853Е+01 | +1.5707963+00 | +90°0'0"
7. | +3.1382548Е+01 | +2.9968126Е+01 | +4.339300Е+01 | +7,6234753Е-01 | +43°40'45"
8. | -О.ОООООООЕ+00 | -7.9977358Е+00 | +7.9977358Е+00 | -1.5707963Е+00 | -90°0'0"
9 | +3.1382548Е+01 | -5.0009233Е+01 | +5.9040559Е+01 | -1.0103761Е+00 | -57°53'25"
10 | +9.0030005Е-01 | +1.4346609Е+00 | +1.6937509Е+00 | +1.0103761Е+00 | +57°53' 25"
11 | +1.1459732Е+00 | +2.3460058Е-01 | +1.697401Е+00 | +2.0192731Е-01 | +11°34'10"
12 | -2.4567315Е-01 | +1.2000603Е+00 | +1.2249490Е+00 | +1.7727236Е+00 | +101°34' 10"
13 | -1.4740389Е+01 | +7.2003619Е+01 | +7.3496941Е+00 | +1.7727236Е+00 | +101°34'10"
14 | +9.0030005Е+01 | -1.4346609Е+02 | +1.6937509Е+02 | -1.0103761Е+00 | -57°53' 25"

Кроме вычисления последовательности отдельных выражений программа позволяет решить систему уравнений порядка n по заданной матрице комплексных коэффициентов. Свободный член уравнения задается в той же матрице последним столбцом. Порядок матрицы и соответственно системы уравнений определяется переменной size, которая может быть задана выражением или константой. Далее решается система вида: A(l,l)*x(l)+A(l,2)*x(2)+...+A(l,n)*x(n)=A(l,n+l); A(n,l)*x(l)+A(n,2)*x(2)+...+A(n,n)*x(n)=A(n,n+l). Коэффициент А(1,1) задается операцией присвоения с помощью некоторого выражения в следующем формате: @1 1=1+1*5, что соответствует записи A(l,l)=l+i*5. Пример записи системы уравнений второго порядка, имеющей вид: x(l)+(l+i*5)*x(2)=i*7; 5*x(l)+i*8*x(2)=7, приведен ниже: size 2 @11=1 @1 2=1+1*5 @1 3=i*7 @21=5 @2 2=i*8 @23=7 compute

Проходя строки этой программы с помощью нажатия на клавишу Enter, мы будем в нижней строке получать значения коэффициентов, а после завершения операции compute получим и значения х(1), х(2), записанные в последовательности строк, начиная с верхней строки экрана. Однажды написанная программа может быть сохранена на диске и снова вызвана для проведения вычислений с помощью соответствующих команд верхней командной строки. При вызове программы необходимо ввести полный путь к файлу с расширением *.сс, в котором эта программа записана, и, получив сообщение "загрузка прошла успешно", нажать последовательно клавиши Esc и Ctrl-PgUp. Основное меню представляет собой краткое описание программы, соответствующее традиционному разделу помощи (Help). Оно имеет подсвеченные ключевые слова, позволяющие переходить при желании к более подробным описаниям отдельных моментов текста.

Основное меню

Функции Операции Константы Команды Синтаксис Режимы "Горячие клавиши" О программе Далее приведена информация об отдельных пунктах меню, представленная в Help, которая содержит следующие разделы

Функции

Программой вычисляются следующие комплексные функции комплексных переменных: Тригонометрические: sin - вычисляется по формуле: sin z = (exp(jz)-exp(-jz+)/2j, cos - вычисляется по формуле: cos z = (exp(jz)+exp(-jz))/2, tg - вычисляется по формуле: tgz = sin z/ cos z, дает ошибку, если cos z = О, etg - вычисляется по формуле: tgz = cos z/ sin z, дает ошибку, если sin z = О, Обратные тригонометрические: arcsin - вычисляется по формуле: arcsin z = ln(jz+sqrt(l-z*z))/j, arccos - вычисляется по формуле: arccos z = ln(z+sqrt(z*z-l))/j, arctg — вычисляется по формуле: arctg z = ln(sqrt((l+jz)/(l-jz))/j, дает ошибку, если z = j или z = -j, arcctg - вычисляется по формуле: arctg z = ln(sqrt((j+z)/(j-z))/j, дает ошибку, если z = j или z = -j, Гиперболические: sh - вычисляется по формуле: sh z = (exp(z)-exp(-z))/2, ch - вычисляется по формуле: ch z = (exp(z)+exp(-z))/2, th — вычисляется по формуле: th z= sh z/ ch z, дает ошибку, если cos z = О, cth - вычисляется по формуле: th z = sh z/ ch z, дает ошибку, если sin z = О, Обратные гиперболические: arsh - вычисляется по формуле: arsh z = ln(z+sqrt(z*z+l)), arch - вычисляется по формуле: arch z = ln(z+sqrt(z*z-l)), arth - вычисляется по формуле: arth z = ln(sqrt((l+z)/(l-z))), дает ошибку, если z = 1 или z = -1, arcth - вычисляется по формуле: arcth z = ln(sqrt((z+l)/(z-l))), дает ошибку, если z = 1 или z = -1. Степенные и логарифмические: ехр - вычисляется по формуле: exp z = exp(x)-*cos(y)+j*sin(y)) при z=x+j*y, In — вычисляется по формуле: In z = ln(r)+j*f при z=r*exp(jf), дает ошибку, если z = О, lg - вычисляется по формуле: lg z = ln(z)/ln(10), дает ошибку, если z = О, sqrt - вычисляется по формуле: sqrt z = sqrt(r)**(cos(i/2)+j*sin(f/2)) при z=r*exp(jf),

Операции

Программой предусматриваются следующие бинарные (над двумя переменными) и унарные (над одной переменной) операции: Бинарные операции - нуждаются в двух аргументах справа и слева от знака операции. Все бинарные операции выполняются слева направо с учетом скобок. Эти операции имеют самый низкий приоритет, причем сначала выполняются следующие операции: * - умножение комплексных величин; / - деление комплексных величин; # - вычисление сопротивления для параллельного соединения двух комплексных сопротивлений; " — операция возведения комплексного числа в комплексную степень; $- запись комплексного числа в экспоненциальной форме; После этого выполняются такие операции, как: + — сложение комплексных чисел; — — вычитание комплексных чисел; , — запись комплексного числа в алгебраической форме. Унарные операции - нуждаются в одном агрументе слева от знака операции. Все бинарные операции выполняются справа налево с учетом скобок. Эти операции имеют наивысший приоритет. К унарным операциям относятся следующие: - я— унарный минус, изменяет знак перед действительной и комплексной частями при записи в алгебраической форме, или знак модуля при записи в экспоненциальной форме; + - унарный плюс, изменяет знак перед действительной и комплексной частями при записи в алгебраической форме, или знак модуля при записи в экспоненциальной форме; &- выполняет операцию замены аргумента на комплексно-сопряженный. Взятие функции одного аргумента также считается унарной операцией.

Константы

Стандартные константы: i или j - мнимая единица, в алгебраической форме записывается в виде (0,1); р-число р, равное 3.14159265358979 Радианные константы: Это действительные числа, выражающие углы в радианной мере. Градусные константы: Задают углы в градусной мере в формате: 'Градусы' Минуты' Секунды. Например, запись '90'12'50 соответствует 90 градусов 12 минут 50 секунд, запись '87 - 87 градусов.

Команды

Функциональные клавиши реализуют следующие команды: F1 - войти в справочную систему, F2 - сохранить программу в текстовом файле *.сс F3 - вставить строки из текстового файла перед текущей строкой, F4 - получить листинг, F5 - очистить экран, F8 - вызвать командный процессор MS-DOS, F9 - вернуться в Norton Commander, F10 - выйти из программы используются стандартные текстовые файлы с длиной строки не более 78 символов

Синтаксис

Строки: Пустая строка - игнорируется программой, при прохождении этой строки ничего не происходит, в нижних табло высвечивается комплексное число равное нулю; Комментарий - строка, начинающаяся с !; Выражение - совокупность постоянных и переменных, связанных знаками операций и скобками. Операторы: size - выделяет необходимый объем памяти для системы уравнений, порядок которой определяется выражением, все коэффициенты в системе обнуляются; compute — оператор решения системы уравнений. Оператор решает систему. = - оператор присвоения, вычисляет значение переменной или коэффициента системы уравнений. Лексемы: Скобки - (), {}, [], о Остальные лексемы рассмотрены выше. К ним относятся функции, константы, операции и переменные. Лексемы могут отделяться друг от друга произвольным числом пробелов (от 0 и более), исключение составляют функции, между которыми должен быть по крайней мере один пробел.

Режимы

Цвет: При вызове этого раздела меню можно установить три различных цветовых режима экрана: IBM цветной; IBM черно-белый; Mazovia Обозначение мнимой единицы: Этот раздел меню позволяет выбирать для обозначения мнимой единицы символ j или i. Иногда (всегда) с порядком (Е): Этот раздел меню позволяет либо выбрать принудительный вывод величин в формате с фиксированной точкой (если выбирается режим всегда) либо оставить определение формата вывода за программой (если выбирается режим иногда). Способ выражения радианных величин выбирается из трех следущих: Режимы для установки величин: Этот пункт меню позволяет установить один из следующих способов представления угловых величин - в радианах, в радианах*p или в градусах.

"Горячие" клавиши

Меню: Перечисляются клавиши осуществляющие движение по строкам меню. Home - к первому элементу меню; End - к последнему элементу меню; Esc - выход из меню; вниз,вправо,Tab - к следующему элементу меню; вверх,влево, Shift+Tab - к предыдущему элементу меню; Enter - выбрать элемент меню. Строка: Перечисляются клавиши команд текстового редактора, применяемого при написании строки программы вычислений. —>/<—- на символ вправо / влево; CTRL+—>, CTRL+<—, - на слово вправо / влево; Home / End - к первому / последнему символу; Backspace - удалить символ слева от курсора; Del - удалить символ, указываемый курсором; Esc - удалить все символы строки; Insert - изменение режима вставки / замены. Прочие: Перечисляются клавиши команд, применяемые для движения по тексту программы в процессе редактирования и вычислений. 4. / Т - на строку вниз / вверх; Ctrl+Home / Ctrl+End - к началу / концу экрана; PgUp / PgDn - на страницу вверх / вниз; Ctrl+ PgUp / Ctrl+ PgDn - к началу / концу программы; Серый + / серый - - удалить / вставить строку Enter - вычислить строку.